This invention relates to the field of digital media and metadata and database structures for searching, storing, organizing, and retrieving digital media and metadata. Digital media objects, such as music, images, movies, electronic documents, video games or data for use with video games, or other types data including audio, images, video, text, or other data, are often associated with metadata. Metadata may describe attributes of one or more digital media objects. For example, metadata for a digital music object can include the name of a song and its performer associated with the digital music file. Metadata may also describe relationships between two or more digital media objects. For example, the metadata for two or more digital music objects can indicate that the digital music objects are part of the same album. Metadata can be embedded within digital media or located outside of digital media.
The metadata associated with digital media objects can be used to define a hierarchy of digital media objects and metadata. For example, digital media objects can be categorized according to metadata by type, such as music, movies, and television shows. Within each category, additional metadata can specify attributes such as genres of music, movies, or television shows. Within a genre of music, metadata can define multiple artists, which in turn can include multiple albums, which in turn can further include multiple tracks.
Previously, metadata is typically modeled and store in a relational database management system (RDBMS) as a collection of tables, such as a categories table, a music genres table, a music artists table, a music albums table, and music tracks table. Foreign keys or other data attributes within each table link together metadata from each table. Metadata for digital media objects is retrieved using one or more database queries, often expressed in a query language such as SQL.
Typically, metadata stored in a RDBMS table contains foreign keys to all of the metadata hierarchy levels above it. For example, a row of the music tracks table would include foreign keys to the associated rows of metadata in the music category, the music genre, the music artist and the music album tables. In another typical arrangement, metadata stored in a RDBMS table contains only foreign keys to the metadata hierarchy level immediately above it. For example, a row of the music tracks table would include foreign keys to the associated rows of metadata in the music album table. A row of the music album table would include foreign keys to the associated rows of metadata in the music artist category.
Both of these prior arrangements of metadata require a complete specification of all types of digital media objects, all types of metadata, and all metadata relationships at the time the database is constructed. Changing or augmenting the types of digital media objects, the types of metadata, or the types of metadata relationships in any way can corrupt the database and break any applications that depend of the database.
Additionally, these prior arrangements of metadata in databases often require applications to perform database queries that have multiple join operations, which can be very time-consuming. Additionally, these database queries often result in the return of the full metadata information for digital media objects, which may be redundant in view of the desired database query.
It is therefore desirable that a system, method, and database schema allow metadata to be stored, retrieved, filtered, and sorted in an efficient manner. It is further desirable that the system, method and database schema be flexible to allow changes or augmentations of the types of digital media objects, the types of metadata, or the types of metadata relationships without corrupting the database, breaking the functionality of any applications that depend of the database, or requiring the database to be reconstructed.